package com.jgzx.constant.code;


import cn.hutool.core.util.ObjectUtil;

/**
 * 编码规则类型
 *
 * @author libo
 * @date 2021/11/2 10:23
 */
public enum CodeRuleTypeEnum {

    /**【常量】0 */
    CONSTANT(0, "常量"),

    /**【时间类型】1 */
    DATETIME(1, "时间类型"),

    /**【流水号】2 */
    SERIAL(2, "流水号"),

    /**【物料分类】3 */
    MATERIEL_CATEGORY(3, "物料分类"),

    /**【自定义属性】4 */
    CUSTOM_ATTRIBUTE(4, "自定义属性"),

    /**【物料编码】5 */
    MATERIEL_CODE(5, "物料编码"),

    /**【物料内码】6 */
    MATERIEL_INNER_CODE(6, "物料内码"),

    /**【校验位】7 */
    CHECK_CODE(7, "校验位"),
    ;

    private final Integer value;
    private final String showName;

    /**
     * @param value 值
     * @param showName 显示名称
     */
    CodeRuleTypeEnum(Integer value, String showName){
        this.value = value;
        this.showName = showName;
    }

    /**
     * 通过编码规则类型值获取枚举对象
     * @param value 编码规则类型值
     * @return 编码规则类型枚举
     */
    public static CodeRuleTypeEnum getCodeRuleTypeEnum(Integer value){
        for(CodeRuleTypeEnum codeRuleTypeEnum : CodeRuleTypeEnum.values()){
            if(ObjectUtil.equal(value, codeRuleTypeEnum.value())){
                return codeRuleTypeEnum;
            }
        }
        return null;
    }

    public Integer value() {
        return this.value;
    }

    public String showName() {
        return this.showName;
    }
}
